@@ -0,0 +1,52 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from __future__ import division  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django_logit import logit  | 
            |
| 6 | 
                +from django.conf import settings  | 
            |
| 7 | 
                +from django_response import response  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +from household.models import HouseholdThermometerMeasureLogInfo, HouseholdThermometerEquipmentBindInfo  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                +@logit  | 
            |
| 12 | 
                +def mp_bind_thermometer(request):  | 
            |
| 13 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 14 | 
                +    macid = request.POST.get('macid', '')
               | 
            |
| 15 | 
                +  | 
            |
| 16 | 
                + HouseholdThermometerEquipmentBindInfo.objects.get_or_create(user_id=user_id, macid=macid)  | 
            |
| 17 | 
                +  | 
            |
| 18 | 
                + return response()  | 
            |
| 19 | 
                +  | 
            |
| 20 | 
                +  | 
            |
| 21 | 
                +def mp_thermometer_list(request):  | 
            |
| 22 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 23 | 
                + eqpts = HouseholdThermometerEquipmentBindInfo.objects.filter(user_id=user_id, status=True)  | 
            |
| 24 | 
                +  | 
            |
| 25 | 
                + eqpts = [eqpt.data for eqpt in eqpts]  | 
            |
| 26 | 
                +  | 
            |
| 27 | 
                +    return response(data={
               | 
            |
| 28 | 
                + eqpts: eqpts  | 
            |
| 29 | 
                + })  | 
            |
| 30 | 
                +  | 
            |
| 31 | 
                +  | 
            |
| 32 | 
                +def mp_upload_temperature(request):  | 
            |
| 33 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 34 | 
                +    macid = request.POST.get('macid', '')
               | 
            |
| 35 | 
                +    temperature = request.POST.get('temperature', '')
               | 
            |
| 36 | 
                +  | 
            |
| 37 | 
                + HouseholdThermometerMeasureLogInfo.objects.create(user_id=user_id, macid=macid, temperature=temperature)  | 
            |
| 38 | 
                +  | 
            |
| 39 | 
                + return response()  | 
            |
| 40 | 
                +  | 
            |
| 41 | 
                +  | 
            |
| 42 | 
                +def mp_temperature_list(request):  | 
            |
| 43 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 44 | 
                +    macid = request.POST.get('macid', '')
               | 
            |
| 45 | 
                +  | 
            |
| 46 | 
                + logs = HouseholdThermometerMeasureLogInfo.objects.filter(macid=macid, status=True)  | 
            |
| 47 | 
                +  | 
            |
| 48 | 
                + logs = [log.data for log in logs]  | 
            |
| 49 | 
                +  | 
            |
| 50 | 
                +    return response(data={
               | 
            |
| 51 | 
                + 'logs': logs  | 
            |
| 52 | 
                + })  | 
            
                @@ -3,7 +3,7 @@  | 
            ||
| 3 | 3 | 
                from django.conf.urls import url  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 5 | 
                from api import (admin_views, aep_views, antigen_views, eqpt_views, field_views, mini_views, oauth_views, point_views,  | 
            
| 6 | 
                - screen_views, wx_views, family_member_views)  | 
            |
| 6 | 
                + screen_views, wx_views, family_member_views, household_views)  | 
            |
| 7 | 7 | 
                 | 
            
| 8 | 8 | 
                 | 
            
| 9 | 9 | 
                urlpatterns = [  | 
            
                @@ -98,3 +98,10 @@ urlpatterns += [  | 
            ||
| 98 | 98 | 
                urlpatterns += [  | 
            
| 99 | 99 | 
                url(r'^upload/antihelion$', antigen_views.upload_antigen, name='antigen_upload'),  | 
            
| 100 | 100 | 
                ]  | 
            
| 101 | 
                +  | 
            |
| 102 | 
                +  | 
            |
| 103 | 
                +# Household  | 
            |
| 104 | 
                +urlpatterns += [  | 
            |
| 105 | 
                + url(r'^mp/household/thermometer/bind$', household_views.mp_bind_thermometer, name='mp_household_bind_thermometer'),  | 
            |
| 106 | 
                + url(r'^mp/household/temperature/upload$', household_views.mp_upload_temperature, name='mp_household_upload_temperature'),  | 
            |
| 107 | 
                +]  | 
            
                @@ -0,0 +1,15 @@  | 
            ||
| 1 | 
                +from django.contrib import admin  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from household.models import HouseholdThermometerMeasureLogInfo, HouseholdThermometerEquipmentBindInfo  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class HouseholdThermometerEquipmentBindInfoAdmin(admin.ModelAdmin):  | 
            |
| 7 | 
                +    list_display = ('bind_id', 'macid', 'user_id', 'status', 'created_at', 'updated_at')
               | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                +class HouseholdThermometerMeasureLogInfoInfoAdmin(admin.ModelAdmin):  | 
            |
| 11 | 
                +    list_display = ('macid', 'user_id', 'temperature', 'status', 'created_at', 'updated_at')
               | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                +admin.site.register(HouseholdThermometerEquipmentBindInfo, HouseholdThermometerEquipmentBindInfoAdmin)  | 
            |
| 15 | 
                +admin.site.register(HouseholdThermometerMeasureLogInfo, HouseholdThermometerMeasureLogInfoInfoAdmin)  | 
            
                @@ -0,0 +1,6 @@  | 
            ||
| 1 | 
                +from django.apps import AppConfig  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +class HouseholdConfig(AppConfig):  | 
            |
| 5 | 
                + default_auto_field = 'django.db.models.BigAutoField'  | 
            |
| 6 | 
                + name = 'household'  | 
            
                @@ -0,0 +1,47 @@  | 
            ||
| 1 | 
                +# Generated by Django 3.2.6 on 2022-12-12 06:51  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +import shortuuidfield.fields  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + initial = True  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                + dependencies = [  | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.CreateModel(  | 
            |
| 16 | 
                + name='HouseholdThermometerEquipmentBindInfo',  | 
            |
| 17 | 
                + fields=[  | 
            |
| 18 | 
                +                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
               | 
            |
| 19 | 
                +                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
               | 
            |
| 20 | 
                +                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
               | 
            |
| 21 | 
                +                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
               | 
            |
| 22 | 
                +                ('bind_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='绑定唯一标识', max_length=22, null=True, unique=True)),
               | 
            |
| 23 | 
                +                ('user_id', models.CharField(blank=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')),
               | 
            |
| 24 | 
                +                ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')),
               | 
            |
| 25 | 
                + ],  | 
            |
| 26 | 
                +            options={
               | 
            |
| 27 | 
                + 'verbose_name': '家用测温设备绑定信息',  | 
            |
| 28 | 
                + 'verbose_name_plural': '家用测温设备绑定信息',  | 
            |
| 29 | 
                + },  | 
            |
| 30 | 
                + ),  | 
            |
| 31 | 
                + migrations.CreateModel(  | 
            |
| 32 | 
                + name='HouseholdThermometerMeasureLogInfo',  | 
            |
| 33 | 
                + fields=[  | 
            |
| 34 | 
                +                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
               | 
            |
| 35 | 
                +                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
               | 
            |
| 36 | 
                +                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
               | 
            |
| 37 | 
                +                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
               | 
            |
| 38 | 
                +                ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')),
               | 
            |
| 39 | 
                +                ('user_id', models.CharField(blank=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')),
               | 
            |
| 40 | 
                +                ('temperature', models.FloatField(default=0, help_text='用户体温', verbose_name='temperature')),
               | 
            |
| 41 | 
                + ],  | 
            |
| 42 | 
                +            options={
               | 
            |
| 43 | 
                + 'verbose_name': '家用测温记录信息',  | 
            |
| 44 | 
                + 'verbose_name_plural': '家用测温记录信息',  | 
            |
| 45 | 
                + },  | 
            |
| 46 | 
                + ),  | 
            |
| 47 | 
                + ]  | 
            
                @@ -0,0 +1,56 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import models  | 
            |
| 4 | 
                +from django.utils.translation import ugettext_lazy as _  | 
            |
| 5 | 
                +from django_models_ext import BaseModelMixin, SexModelMixin  | 
            |
| 6 | 
                +from shortuuidfield import ShortUUIDField  | 
            |
| 7 | 
                +from TimeConvert import TimeConvert as tc  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                +class HouseholdThermometerEquipmentBindInfo(BaseModelMixin):  | 
            |
| 11 | 
                +    bind_id = ShortUUIDField(_('bind_id'), max_length=32, blank=True, null=True, help_text='绑定唯一标识', db_index=True, unique=True)
               | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                +    user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识')
               | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                +    macid = models.CharField(_('macid'), max_length=32, blank=True, null=True, help_text='设备号')
               | 
            |
| 16 | 
                +  | 
            |
| 17 | 
                + class Meta:  | 
            |
| 18 | 
                +        verbose_name = _('家用测温设备绑定信息')
               | 
            |
| 19 | 
                +        verbose_name_plural = _('家用测温设备绑定信息')
               | 
            |
| 20 | 
                +  | 
            |
| 21 | 
                + def __unicode__(self):  | 
            |
| 22 | 
                + return self.pk  | 
            |
| 23 | 
                +  | 
            |
| 24 | 
                + @property  | 
            |
| 25 | 
                + def data(self):  | 
            |
| 26 | 
                +        return {
               | 
            |
| 27 | 
                + 'bind_id': self.bind_id,  | 
            |
| 28 | 
                + 'user_id': self.user_id,  | 
            |
| 29 | 
                + 'macid': self.macid,  | 
            |
| 30 | 
                + 'created_at': tc.local_string(utc_dt=self.created_at),  | 
            |
| 31 | 
                + }  | 
            |
| 32 | 
                +  | 
            |
| 33 | 
                +  | 
            |
| 34 | 
                +class HouseholdThermometerMeasureLogInfo(BaseModelMixin):  | 
            |
| 35 | 
                +    macid = models.CharField(_('macid'), max_length=32, blank=True, null=True, help_text='设备号')
               | 
            |
| 36 | 
                +  | 
            |
| 37 | 
                +    user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识')
               | 
            |
| 38 | 
                +  | 
            |
| 39 | 
                +    temperature = models.FloatField(_('temperature'), default=0, help_text='用户体温')
               | 
            |
| 40 | 
                +  | 
            |
| 41 | 
                +  | 
            |
| 42 | 
                + class Meta:  | 
            |
| 43 | 
                +        verbose_name = _('家用测温记录信息')
               | 
            |
| 44 | 
                +        verbose_name_plural = _('家用测温记录信息')
               | 
            |
| 45 | 
                +  | 
            |
| 46 | 
                + def __unicode__(self):  | 
            |
| 47 | 
                + return self.pk  | 
            |
| 48 | 
                +  | 
            |
| 49 | 
                + @property  | 
            |
| 50 | 
                + def data(self):  | 
            |
| 51 | 
                +        return {
               | 
            |
| 52 | 
                + 'macid': self.macid,  | 
            |
| 53 | 
                + 'user_id': self.user_id,  | 
            |
| 54 | 
                + 'temperature': self.temperature,  | 
            |
| 55 | 
                + 'created_at': tc.local_string(utc_dt=self.created_at),  | 
            |
| 56 | 
                + }  | 
            
                @@ -0,0 +1,3 @@  | 
            ||
| 1 | 
                +from django.test import TestCase  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Create your tests here.  | 
            
                @@ -0,0 +1,3 @@  | 
            ||
| 1 | 
                +from django.shortcuts import render  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Create your views here.  | 
            
                @@ -58,6 +58,7 @@ INSTALLED_APPS = [  | 
            ||
| 58 | 58 | 
                'api',  | 
            
| 59 | 59 | 
                'account',  | 
            
| 60 | 60 | 
                'equipment',  | 
            
| 61 | 
                + 'household',  | 
            |
| 61 | 62 | 
                ]  | 
            
| 62 | 63 | 
                 | 
            
| 63 | 64 | 
                MIDDLEWARE = [  |